package io.adrainty.bolee.insurance.models.aggregate;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author AdRainty
 * @version V1.0.0
 * @since 2025/8/25 下午11:30
 */

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "收益试算结果")
public class EarningResultDTO implements Serializable {
    
    @Serial
    private static final long serialVersionUID = 5607346488867917494L;

    @Schema(description = "每周期保费")
    private BigDecimal premium;

    @Schema(description = "投入总保费")
    private BigDecimal premiums;

    @Schema(description = "投入总期数")
    private Integer periods;

    @Schema(description = "投入周期单位")
    private String periodicUnit;

    @Schema(description = "投入周期时长")
    private String periodic;

    @Schema(description = "投入结束时间")
    private LocalDateTime putInEndTime;

    @Schema(description = "领取开始时间")
    private LocalDateTime actualGetStartTime;

    @Schema(description = "领取周期单位")
    private String actualGetPeriodicUnit;

    @Schema(description = "领取周期计划")
    private List<EarningPeriodicDTO> periodicVos;

    @Schema(description = "领取总金额")
    private BigDecimal receivedAmounts ;

    @Schema(description = "累计收益")
    private BigDecimal accumulatedEarnings;

    @Schema(description = "累计倍数")
    private BigDecimal multiple;
    
}
